Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In some cases, software applications are designed to interact with other software applications or other computer systems. For example, as part of a computer programming environment, a read-eval-print loop (REPL) may be used to communicate with a server computer system. The client computer system typically creates a batch of commands and sends those commands to the server to be processed. The server then creates a context for processing the commands, processes the commands, tears down the processing context and returns the results to the user. The user's interactions with the server are thus disjointed and asynchronous.